package com.atguigu.bigdata.spark.zzgcore.rdd.builder

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @Classname Spark01_RDD_Memory
 * @Description 数据分区如何分配
 * @Date 2023/9/19 16:28
 * @Author zhuzhenguo
 */
object Spark03_RDD_File_Par2 {
  def main(args: Array[String]): Unit = {

    // 准备环境,这个 *表示系统当前最大可用核数
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val sc = new SparkContext(sparkConf)

    // 14byte / 2 = 7byte
    // 14 / 7 = 2(分区)

    /*
    * 1234567@@ => 012345678
    * 89@@      => 9101112
    * 0         => 13
    *
    * [0,7]   => 1234567
    * [7,14]  => 890
    * */
    // 一行一行以偏移量的位置为起始来做操作
    // 如果数据源为多个文件，那么计算分区时以文件为单位进行分区
    val rdd: RDD[String] = sc.textFile("datas/word.txt", 2)

    rdd.saveAsTextFile("output")

    // 关闭环境
    sc.stop()
  }
}
